﻿namespace ManagerClinic.DanhMuc
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using DevExpress.XtraEditors;
    using ManagerClinic.Core.Common;
    using ManagerClinic.Core.Business;
    using ManagerClinic.Ultilities.Ultility;
    using ManagerClinic.Modules;
    using System.Linq;

    public partial class frmDmVatTu : DevExpress.XtraEditors.XtraForm
    {
        IList<DmVatTuEntity> lstDmVatTuEntity = null;
        GridCheckMarksSelection gridCheckMarksSelection = null;

        DmVatTuBusiness dmVatTuBusiness = new DmVatTuBusiness();
        DmLoaiVatTuBusiness dmLoaiVatTuBusiness = new DmLoaiVatTuBusiness();
        DmPhanLoaiVatTuBusiness dmPhanLoaiVatTuBusiness = new DmPhanLoaiVatTuBusiness();

        public frmDmVatTu()
        {
            InitializeComponent();

            gridCheckMarksSelection = new GridCheckMarksSelection(gvDmVatTu);
            LoadDmLoaiVatTu();
        }
        private void LoadDmLoaiVatTu()
        {
            var lstDmLoaiVatTuEntity = dmLoaiVatTuBusiness.GetDmLoaiVatTuList();
            var dmLoaiVatTuEntity = new DmLoaiVatTuEntity()
            {
                MaLoaiVatTu = ConstantManagerClinic.sValueMember,
                TenLoaiVatTu = ConstantManagerClinic.sDisplayMember
            };
            lstDmLoaiVatTuEntity.Insert(0, dmLoaiVatTuEntity);

            lkLoaiVatTu.Properties.DataSource = lstDmLoaiVatTuEntity;
            lkLoaiVatTu.Properties.DisplayMember = "TenLoaiVatTu";
            lkLoaiVatTu.Properties.ValueMember = "MaLoaiVatTu";
            lkLoaiVatTu.EditValue = ConstantManagerClinic.sValueMember;
        }

        void LoadPhanLoaiVt()
        {
            var lstPhanLoaiVatTuEntity = dmPhanLoaiVatTuBusiness.GetDmPhanLoaiVatTuList(lkLoaiVatTu.EditValue.ToString());
            lstPhanLoaiVatTuEntity.Insert(0, new DmPhanLoaiVatTuEntity() { MaPhanLoaiVatTu = ConstantManagerClinic.sValueMember, TenPhanLoaiVatTu = ConstantManagerClinic.sDisplayMember });

            lkPhanLoaiVatTu.Properties.DataSource = lstPhanLoaiVatTuEntity;
            lkPhanLoaiVatTu.Properties.ValueMember = "MaPhanLoaiVatTu";
            lkPhanLoaiVatTu.Properties.DisplayMember = "TenPhanLoaiVatTu";
            lkPhanLoaiVatTu.EditValue = ConstantManagerClinic.sValueMember;
        }

        private void LoadDataGrid(object sender, EventArgs e)
        {
            var lstDmVatTuEntity = dmVatTuBusiness.GetDmVatTuList(lkPhanLoaiVatTu.EditValue.ToString());
            grdDmVatTu.DataSource = lstDmVatTuEntity;
        }

        private DmVatTuEntity GetDMVT()
        {
            if (gvDmVatTu.RowCount > 0)
            {
                return (DmVatTuEntity)gvDmVatTu.GetFocusedRow();
            }
            return null;
        }

        private void frmDMVattu_Load(object sender, EventArgs e)
        {
            Authenticate.IsAuthenticateForm(this);
            LoadDataGrid(sender, e);
        }

        private void gvDmvattu_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
        {
            if (e.Info.IsRowIndicator)
            {
                e.Info.DisplayText = (e.RowHandle + 1).ToString();
                e.Handled = false;
            }
        }

        private void lkdmnhomvt_EditValueChanged(object sender, EventArgs e)
        {
            LoadPhanLoaiVt();
        }

        private void btnThemMoi_Click(object sender, EventArgs e)
        {
            var frm = new frmCapNhatDmVatTu((int)ConstantManagerClinic.StateInsertOrUpdate.Insert);
            frm.dmVatTuEvent += new EventHandler(LoadDataGrid);
            frm.ShowDialog();
        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            DmVatTuEntity dmVatTuEntity = GetDMVT();
            if (dmVatTuEntity == null) return;
            var frm = new frmCapNhatDmVatTu((int)ConstantManagerClinic.StateInsertOrUpdate.Update, dmVatTuEntity);
            frm.dmVatTuEvent += new EventHandler(LoadDataGrid);
            frm.ShowDialog();
        }

        private void grdDmvattu_DoubleClick(object sender, EventArgs e)
        {
            if (btnSua.Enabled == false) return;
            btnSua_Click(sender, e);
        }

        private void btnDong_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            var deleteObjects = gridCheckMarksSelection.selection;

            if (deleteObjects.Count <= 0)
            {
                MessageBox.Show("Bạn chưa chọn bản ghi để xóa!", ConstantManagerClinic.sTitleInformation, MessageBoxButtons.OK);
                return;
            }

            if (MessageBox.Show("Bạn chắc chắn muốn xóa dữ liệu?", ConstantManagerClinic.sTitleWarming, MessageBoxButtons.YesNo) == DialogResult.No)
            {
                gridCheckMarksSelection.ClearSelection();
                return;
            }

            foreach (DmVatTuEntity dm in deleteObjects)
            {
                dmVatTuBusiness.DeleteDmVatTu(dm.MaVatTu);
            }

            gridCheckMarksSelection.ClearSelection();
            LoadDataGrid(sender, e);
        }

        private void lkPhanLoaiVatTu_EditValueChanged(object sender, EventArgs e)
        {
            LoadDataGrid(sender, e);
        }

    }
}